//http请求文件
import store from '../store'

// 反向代理配置在manifest.json文件中的源码视图中的"h5":"devServer",跨域问题只会出现在h5页面用外部浏览器打开的时候,注意切换环境的时候要改一下微信效果小程序的appid
let Condition = '/dev' // 测试环境
// let Condition = '/pre' // 预发布环境
let baseUrl = ''

// 只在H5平台运行(H5端会产生跨域问题)
// #ifdef H5
baseUrl= Condition
// #endif

// 除了H5其他平台不使用代理直接进行数据请求
// #ifndef H5
Condition == '/dev' ? baseUrl = 'http://106.14.159.41:8186' : baseUrl =  'http://106.14.159.41:8186'
// #endif


// 网络请求时间
const timeout = 30000;

//获取coookie
const getCookie = (url, val) => {
  //只在h5平台使用这种方式获取cookie
  // #ifdef H5
  var arr,reg=new RegExp("(^| )"+val+"=([^;]*)(;|$)");
  if(arr=document.cookie.match(reg)) {
	  return unescape(arr[2]);
  } else {
	  return null;
  }
  // #endif
  
  // 只有APP平台使用这种方式获取cookie
  // #ifdef APP
  plus.navigator.getCookie( url );
  // #endif
}

//定义万能请求
const ajax = (url, ajaxConfig = {}) => {
	uni.showLoading({
		title:'加载中',
		mask: true,
	})
	return uni.request({
		url: baseUrl + url,
		data,
		header:{
			/* 'x-csrf-token': getCookie('csrfToken'), */
			Authorization: store.state.user.token,
			...ajaxConfig.header,
		},
		method: ajaxConfig.method,
		timeout,
		success: (res) => {
		},
		complete: () => {
			uni.hideLoading();
		}
	})
}

//post请求
const post = (url, data={}, ajaxConfig = {}) => {
	uni.showLoading({
		title:'加载中',
		mask: true,
	})
	//console.log(ajaxConfig);
	return new Promise((resolve, reject) => {
		uni.request({
			url: baseUrl + url,
			data,
			header: {
				/* 'x-csrf-token': getCookie(baseUrl + url, 'csrfToken'), */
				...ajaxConfig.header,
			},
			method: 'POST',
			timeout,
			success: (res) => {
				resolve(res.data);
			},
			fail: (err) => {
				uni.showToast({
					icon:'none',
					title:'请求失败',
					mask: true,
				})
			},
			complete: () => {
				uni.hideLoading();
			}
		})
	}) 
}

//get请求
const get = (url, data={}) => {
	uni.showLoading({
		title:'加载中',
		mask: true,
	})
	return new Promise((resolve, reject) => { 
		uni.request({
			url: baseUrl + url,
			data,
			header: {
				/* 'x-csrf-token': getCookie('csrfToken'), */
				// Authorization: store.state.user.token,
			},
			timeout,
			success: (res) => {
				resolve(res.data);
			},
			complete: () => {
				uni.hideLoading();
			}
		})
	})
}

export default {
	ajax,
	post,
	get,
}